# 接口
## 抽象类:
1. 理解起来很容易,比如父类是动物,子类是狗;动物嘛,肯定得会呼吸;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| public class Animal { protected void breath() { System.out.println("breath"); } } public class Mouse extends Animal { public static void main(String a[]) { Animal mouse = new Mouse("11",1); mouse.breath(); } public Mouse(String myName, int myid) { super(myName, myid); } @Override protected void breath() { System.out.println("mousebreath"); } }
|
## 接口
1. 抽象类是说有这么一个父类方法几乎不用,但是又想定义出来,形成继承关系;使得通过父类可以简单调用相应方法;那么接口呢,就是父类中全部的东西都是抽象的;就像是动物,动物有一大堆方法,呼吸啊,吃啊之类的;这个类我们将其接口话,所有implements动物的,都得有这些方法;你不重写就算错
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| public interface Instrument { int VALUE = 5 ; void play(); void adjust(); } public class Wind implements Instrument{ public static void main(String a[]) { Instrument instrument = new Wind(); int b = Wind.VALUE; } @Override public void play() { } @Override public void adjust() { } }
|
## 完全解耦 与适配器类
- 书上写的太晕了,完全看不懂;解耦嘛,简单说就是通过接口,把只有继承关系中能用的开放出去;
- 抽象类可以不实现接口的方法
- 适配器
## 多重继承
1.当存在继承+接口时,接口不需要实现;
2. 接口的作用 向上转型为多个父类(接口类),同时防止创建对象
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| public interface CanFight { void fight(); } public class ActionCharacter { public void fight() { System.out.println("fight1"); } } public class Hero extends ActionCharacter implements CanFight{ @Override public void fight() { super.fight(); System.out.println("fight"); } } public class Adventure { public static void t(CanFight fight) { fight.fight(); } public static void t2(ActionCharacter x ) { x.fight(); } public static void main(String a[]) { Hero hero = new Hero(); t(hero); t2(hero); } }
|
## 通过继承扩展接口
1. 接口可以通过继承保留父类接口的方法,同时加入自己的,这样接口的扩展性就变得很好;由于接口继承,方法都是未实现的,所以肯定没有重写什么的,也就不会出现c++多重继承不知道继承谁的问题了;
## 适配器 (需要重点复习)
插座示例
## 工厂类
- 和适配器一样,属于模式上的事情;所以日后再说?